
    /**  
     * @Title: CglibProxy.java
     * @Package com.burns.java.base.aop.cglib
     * @Description: TODO(用一句话描述该文件做什么)
     * @author 35725
     * @date 2020年5月21日 下午5:23:08 
     * @version V1.0  
     */
    
package com.burns.java.base.aop.cglib;

import java.lang.reflect.Method;

import net.sf.cglib.proxy.Enhancer;
import net.sf.cglib.proxy.MethodInterceptor;
import net.sf.cglib.proxy.MethodProxy;

/**
     * @ClassName: CglibProxy
     * @Description: TODO(这里用一句话描述这个类的作用)
     * @author 35725
     * @date 2020年5月21日
     *
     */

public class CglibProxy implements MethodInterceptor {
    private Enhancer enhancer = new Enhancer();
    public Object getProxy(Class clazz){
        enhancer.setSuperclass(clazz);
        enhancer.setCallback(this);
        return enhancer.create();
    }
    public Object intercept(Object o, Method method, Object[] objects, MethodProxy methodProxy) throws Throwable {
        System.out.println("前置代理");
        //通过代理类调用父类中的方法
        Object result = methodProxy.invokeSuper(o, objects);

        System.out.println("后置代理");
        return result;
    }
}
